Estudiantes:
Curso: Fundamento de R para CCSS y Gestión Pública 2023
Diplomatura: Especialización en Ciencia de Datos para las Ciencia Sociales y la Gestión Pública
En los últimos años, …
Ante la ingente cantidad de datos …
El presente trabajo persigue el siguiente objetivo:
Utilizar …
library(tidyverse) #conjunto de paquetes
library("labelled") #Paquete para ver las etiquetas de las variables
# #Creando las bases de datos
# df1 <- haven::read_sav("01. Data/CARATULA/01_PENALES_CARATULA.sav")
# df2 <- haven::read_sav("01. Data/CONDICIONES DE VIDA DEL INTERNO/01_PENALES_CAP300.sav")
# df3 <- haven::read_sav("01. Data/CONDICIONES DEL INTERNO/01_PENALES_CAP100.sav")
# df4 <- haven::read_sav("01. Data/ROL DE LAS INSTITUCIONES/01_PENALES_CAP400.sav")
# df5 <- haven::read_sav("01. Data/TIPIFICACION DEL DELITO/01_PENALES_CAP200.sav")
#
# #Integrando las bases de datos
#
# df_1_2 <- inner_join(df1, df2, by = "ID_CARATULA", "INTERNO_ID")
# df_1_2_3 <- inner_join(df_1_2, df3, by = "ID_CARATULA", "INTERNO_ID")
# df_1_2_3_4 <- inner_join(df_1_2_3, df4, by = "ID_CARATULA", "INTERNO_ID")
# df_total <- inner_join(df_1_2_3_4, df5, by = "ID_CARATULA", "INTERNO_ID")
# Seleccionar las variables de Interés
# CNPP_data <- df_total |>
# select(EST_PENIT, GENERO, E_CIVIL, TSALUD_8,
# EDAD, NACIONALIDAD, NAC_DD, DELITO_GENERICO, P101, P104_1,
# P105, P107_1, P107C_1, P107_2, P107_3, P107_4, P107_5,
# P107_6, P107_7, P107_8, P107_9, P107_10, P107_11, P107_12,
# P109_1, P109_2, P109_3, P114, P133, P135, P201_DD, P204, P215, P220,
# P303, P306, P308, P313_1, P313_2, P313_3, P313_4, P313_5,
# P314, P315, P403_1, P403_2, P403_3, P403_4, P403_5, P403_6,
# P403_7)
# Guardar el dataframe en formato sav
# library(haven)
#
# write_sav(CNPP_data, "CNPP_data.sav")
# Importar datos
CNPP_data <- haven::read_sav("CNPP_data.sav")
CNPP_data
# Presentar el contenido de las variables de interés
var_label(CNPP_data)
## $EST_PENIT
## [1] "7. NOMBRE DEL ESTABLECIMIENTO PENITENCIARIO (E.P.)"
##
## $GENERO
## [1] "12. SEXO"
##
## $E_CIVIL
## [1] "13. ESTADO CIVIL"
##
## $TSALUD_8
## [1] "17. TIPO DE SEGURO DE SALUD_8. No tiene seguro de salud"
##
## $EDAD
## [1] "18. EDAD"
##
## $NACIONALIDAD
## [1] "20. NACIONALIDAD"
##
## $NAC_DD
## [1] "22. LUGAR DE NAC._A. DEPARTAMENTO"
##
## $DELITO_GENERICO
## [1] "DELITO GENÉRICO"
##
## $P101
## [1] "101. EL IDIOMA O LENGUA MATERNA QUE USTED APRENDIÓ EN SU NIÑEZ FUE:"
##
## $P104_1
## [1] "104. ANTES DE INGRESAR AL E.P., ¿CUÁL FUE EL ÚLTIMO AÑO O GRADO DE ESTUDIOS Y NIVEL QUE APROBÓ?_NIVEL DE ESTUDIOS"
##
## $P105
## [1] "105. ¿CUÁL FUE LA RAZÓN PRINCIPAL POR LA QUE USTED NO ESTUDIÓ O NO TERMINÓ DE ESTUDIAR EN EL COLEGIO?"
##
## $P107_1
## [1] "107_1. ¿PADECE UD. DE: ENFERMEDADES CRÓNICAS_Enfermedad pulmonar crónica tal como asma, bronquitis o enfisema?"
##
## $P107C_1
## [1] "107C_1. ¿ACTUALMENTE RECIBE UD. TRATAMIENTO MÉDICO (MEDICINA, TERAPIA, ETC)?"
##
## $P107_2
## [1] "107_2. ¿PADECE UD. DE: ENFERMEDADES CRÓNICAS_Hipertensión, es decir, presión alta?"
##
## $P107_3
## [1] "107_3. ¿PADECE UD. DE: ENFERMEDADES CRÓNICAS_Diabetes, es decir, niveles altos de azúcar en la sangre?"
##
## $P107_4
## [1] "107_4. ¿PADECE UD. DE: ENFERMEDADES INFECTO CONTAGIOSAS_Tuberculosis?"
##
## $P107_5
## [1] "107_5. ¿PADECE UD. DE: ENFERMEDADES INFECTO CONTAGIOSAS_Infecciones de Transmisión Sexual?"
##
## $P107_6
## [1] "107_6. ¿PADECE UD. DE: ENFERMEDADES INFECTO CONTAGIOSAS_VIH/SIDA?"
##
## $P107_7
## [1] "107_7. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Hepatitis?"
##
## $P107_8
## [1] "107_8. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Depresión?"
##
## $P107_9
## [1] "107_9. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Ansiedad?"
##
## $P107_10
## [1] "107_10. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Adicción a sustancias psicoactivas?"
##
## $P107_11
## [1] "107_11. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Cáncer?"
##
## $P107_12
## [1] "107_12. ¿PADECE UD. DE: OTRAS ENFERMEDADES_Otro?"
##
## $P109_1
## [1] "109_1. ¿ANTES DE INGRESAR AL E.P. USTED CONSUMÍA: Drogas?"
##
## $P109_2
## [1] "109_2. ¿ANTES DE INGRESAR AL E.P. USTED CONSUMÍA: Bebidas alcohólicas?"
##
## $P109_3
## [1] "109_3. ¿ANTES DE INGRESAR AL E.P. USTED CONSUMÍA: Cigarrillos?"
##
## $P114
## [1] "114. ANTES DE INGRESAR AL ESTABLECIMIENTO PENITENCIARIO, ¿USTED TRABAJÓ ALGUNA VEZ?"
##
## $P133
## [1] "133. ¿ALGÚN MIEMBRO DE SU FAMILIA ESTUVO PRESO EN UN ESTABLECIMIENTO PENITENCIARIO ALGUNA VEZ?"
##
## $P135
## [1] "135. ANTES DE CUMPLIR LOS 18 AÑOS DE EDAD. ¿ALGUN(OS) DE SU(S) MEJOR(ES) AMIGO(S) COMETÍA(N) DELITOS?"
##
## $P201_DD
## [1] "201. DEPARTAMENTO EN EL QUE OCURRIO EL DELITO"
##
## $P204
## [1] "204. CUANDO OCURRIÓ EL DELITO, ¿USTED USÓ ALGÚN ARMA?"
##
## $P215
## [1] "215. ¿USTED ESTUVO INTERNADO(A) EN ALGÚN CENTRO JUVENIL?"
##
## $P220
## [1] "220. SIN TOMAR EN CUENTA LA SENTENCIA QUE ACTUALMENTE CUMPLE: ¿EN ALGUNA OTRA OCASIÓN LO HABÍAN SENTENCIADO O PROCESADO A PENA EFECTIVA POR ALGÚN OTRO DELITO?"
##
## $P303
## [1] "303. ¿USTED ESTÁ ESTUDIANDO EN ALGÚN PROGRAMA EN EL ESTABLECIMIENTO PENITENCIARIO?"
##
## $P306
## [1] "306. ¿POR QUÉ PARTICIPA EN LOS TALLERES LABORALES?"
##
## $P308
## [1] "308. ¿CUÁL ES LA RAZÓN POR LA QUE USTED NO PARTICIPA EN PROGRAMAS EDUCATIVOS?"
##
## $P313_1
## [1] "313_1. ¿EN CUÁLES DE LAS SIGUEINTES ACTIVIDADES UD HA PARTICIPADO DURANTE EL ÚLTIMO MES: Actividades deportivas?"
##
## $P313_2
## [1] "313_2. ¿EN CUÁLES DE LAS SIGUEINTES ACTIVIDADES UD HA PARTICIPADO DURANTE EL ÚLTIMO MES: Actividades laborales reconocidas por el INPE?"
##
## $P313_3
## [1] "313_3. ¿EN CUÁLES DE LAS SIGUEINTES ACTIVIDADES UD HA PARTICIPADO DURANTE EL ÚLTIMO MES: Labores de limpieza o mantenimiento de la institución?"
##
## $P313_4
## [1] "313_4. ¿EN CUÁLES DE LAS SIGUEINTES ACTIVIDADES UD HA PARTICIPADO DURANTE EL ÚLTIMO MES: Programa de tratamiento PIM?"
##
## $P313_5
## [1] "313_5. ¿EN CUÁLES DE LAS SIGUEINTES ACTIVIDADES UD HA PARTICIPADO DURANTE EL ÚLTIMO MES: Otros"
##
## $P314
## [1] "314. ¿POR QUÉ USTED NO REALIZA NINGUNA ACTIVIDAD DENTRO DE LA INSTITUCIÓN?"
##
## $P315
## [1] "315. EN LOS ÚLTIMOS TRES MESES, ¿CON QUÉ FRECUENCIA LO VISITÓ SU FAMILIA?"
##
## $P403_1
## [1] "403_1 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Estudiar"
##
## $P403_2
## [1] "403_2 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Trabajar"
##
## $P403_3
## [1] "403_3 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Viajar"
##
## $P403_4
## [1] "403_4 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Retornar a mi país"
##
## $P403_5
## [1] "403_5 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Otros"
##
## $P403_6
## [1] "403_6 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Regresar con mi familia"
##
## $P403_7
## [1] "403_7 ¿QUÉ PIENSA HACER CUANDO SALGA DEL EP? Reincorporarme a la sociedad"
# Identificación de valores atípicos y datos perdidos
summary(CNPP_data)
## EST_PENIT GENERO E_CIVIL TSALUD_8
## Length:75963 Min. :1.00 Min. :1.000 Min. :0.0000
## Class :character 1st Qu.:1.00 1st Qu.:1.000 1st Qu.:0.0000
## Mode :character Median :1.00 Median :3.000 Median :0.0000
## Mean :1.06 Mean :3.525 Mean :0.4438
## 3rd Qu.:1.00 3rd Qu.:6.000 3rd Qu.:1.0000
## Max. :2.00 Max. :6.000 Max. :1.0000
##
## EDAD NACIONALIDAD NAC_DD DELITO_GENERICO
## Min. :18.00 Length:75963 Length:75963 Length:75963
## 1st Qu.:27.00 Class :character Class :character Class :character
## Median :34.00 Mode :character Mode :character Mode :character
## Mean :36.04
## 3rd Qu.:43.00
## Max. :89.00
##
## P101 P104_1 P105 P107_1
## Min. : 1.000 Min. : 1.000 Min. : 1.000 Min. :1.000
## 1st Qu.: 7.000 1st Qu.: 4.000 1st Qu.: 3.000 1st Qu.:2.000
## Median : 7.000 Median : 5.000 Median : 3.000 Median :2.000
## Mean : 6.396 Mean : 5.183 Mean : 4.063 Mean :1.919
## 3rd Qu.: 7.000 3rd Qu.: 6.000 3rd Qu.: 4.000 3rd Qu.:2.000
## Max. :10.000 Max. :11.000 Max. :12.000 Max. :3.000
## NA's :1833 NA's :31323
## P107C_1 P107_2 P107_3 P107_4 P107_5
## Min. :1.00 Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:1.00 1st Qu.:2.000 1st Qu.:2.00 1st Qu.:2.000 1st Qu.:2.000
## Median :2.00 Median :2.000 Median :2.00 Median :2.000 Median :2.000
## Mean :1.52 Mean :1.935 Mean :1.98 Mean :1.962 Mean :1.995
## 3rd Qu.:2.00 3rd Qu.:2.000 3rd Qu.:2.00 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :2.00 Max. :3.000 Max. :3.00 Max. :3.000 Max. :3.000
## NA's :71303
## P107_6 P107_7 P107_8 P107_9 P107_10
## Min. :1 Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:2 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Median :2 Median :2.000 Median :2.000 Median :2.000 Median :2.000
## Mean :2 Mean :1.996 Mean :1.908 Mean :1.918 Mean :1.977
## 3rd Qu.:2 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3 Max. :3.000 Max. :3.000 Max. :3.000 Max. :3.000
##
## P107_11 P107_12 P109_1 P109_2
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:1.000
## Median :2.000 Median :2.000 Median :2.000 Median :1.000
## Mean :2.005 Mean :1.923 Mean :1.758 Mean :1.327
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :3.000 Max. :3.000 Max. :3.000
##
## P109_3 P114 P133 P135
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :2.000 Median :1.000 Median :2.000 Median :2.000
## Mean :1.672 Mean :1.044 Mean :1.712 Mean :1.671
## 3rd Qu.:2.000 3rd Qu.:1.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :2.000 Max. :3.000 Max. :3.000
##
## P201_DD P204 P215 P220
## Length:75963 Min. :1.000 Min. :1.000 Min. :1.000
## Class :character 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Mode :character Median :2.000 Median :2.000 Median :2.000
## Mean :1.829 Mean :1.931 Mean :1.842
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :3.000 Max. :3.000
## NA's :70 NA's :70 NA's :16632
## P303 P306 P308 P313_1
## Min. :1.000 Min. :1.00 Min. : 1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.00 1st Qu.: 3.000 1st Qu.:1.000
## Median :2.000 Median :1.00 Median : 3.000 Median :1.000
## Mean :1.743 Mean :1.56 Mean : 3.708 Mean :1.354
## 3rd Qu.:2.000 3rd Qu.:2.00 3rd Qu.: 4.000 3rd Qu.:2.000
## Max. :2.000 Max. :4.00 Max. :10.000 Max. :3.000
## NA's :82 NA's :62491 NA's :19581 NA's :82
## P313_2 P313_3 P313_4 P313_5
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:2.000
## Median :2.000 Median :1.000 Median :2.000 Median :2.000
## Mean :1.525 Mean :1.306 Mean :1.606 Mean :2.003
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :3.000 Max. :3.000 Max. :3.000 Max. :3.000
## NA's :82 NA's :82 NA's :82 NA's :82
## P314 P315 P403_1 P403_2
## Min. : 1.00 Min. : 1.000 Min. :0.0000 Min. :0.0000
## 1st Qu.: 4.00 1st Qu.: 3.000 1st Qu.:0.0000 1st Qu.:1.0000
## Median : 7.00 Median : 5.000 Median :0.0000 Median :1.0000
## Mean : 6.29 Mean : 4.838 Mean :0.1344 Mean :0.9286
## 3rd Qu.: 8.00 3rd Qu.: 6.000 3rd Qu.:0.0000 3rd Qu.:1.0000
## Max. :10.00 Max. :10.000 Max. :1.0000 Max. :1.0000
## NA's :70061 NA's :82 NA's :133 NA's :133
## P403_3 P403_4 P403_5 P403_6
## Min. :0.00000 Min. :0.00000 Min. :0.00000 Min. :1
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.:1
## Median :0.00000 Median :0.00000 Median :0.00000 Median :1
## Mean :0.04893 Mean :0.01386 Mean :0.01917 Mean :1
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.:1
## Max. :1.00000 Max. :1.00000 Max. :1.00000 Max. :1
## NA's :133 NA's :133 NA's :133 NA's :72270
## P403_7
## Min. :1
## 1st Qu.:1
## Median :1
## Mean :1
## 3rd Qu.:1
## Max. :1
## NA's :75201
# Se crea una nueva variable, denominada "consumo"; cuyos valor es "Sí" cuando el reo consumía drogas, bebidas alcohólicas o cigarillos antes de ingresar al centro penitenciario.
CNPP_data <- CNPP_data |>
mutate(consumo = case_when(P109_1 == 1 & (P109_2 == 2 | P109_2 == 3) & (P109_3 == 2 | P109_3 == 3) ~ "DROGAS", (P109_1 == 2 | P109_1 == 3) & P109_2 == 1 & (P109_3 == 2 | P109_3 == 3) ~ "BEBIDAS ALCOHOLICAS", (P109_1 == 2 | P109_1 == 3) & (P109_2 == 2 | P109_2 == 3) & P109_3 == 1 ~ "CIGARRILLOS", P109_1 == 1 & P109_2 == 1 & (P109_3 == 2 | P109_3 == 3) ~ "DROGAS Y BEBIDAS ALCOHOLICAS", P109_1 == 1 & (P109_2 == 2 | P109_2 == 3) & P109_3 == 1 ~ "DROGAS Y CIGARRILLOS", (P109_1 == 2 | P109_1 == 3) & P109_2 == 1 & P109_3 == 1 ~ "BEBIDAS ALCOHOLICAS Y CIGARRILLOS", P109_1 == 1 & P109_2 == 1 & P109_3 == 1 ~ "DROGAS, BEBIDAS ALCOHOLICAS Y CIGARRILLOS", TRUE ~ "NO/NO CONTESTA"))
# Utilizando 'count' y 'mutate' hallamos la cantidad de reos que consumían drogas, bebidas alcohólicas o cigarillos antes de ingresar al centro penitenciario, así como el porcentaje que representan respecto del total.
CNPP_data |>
count(consumo) |>
mutate(Porcentaje_consumo = round(n/sum(n)*100,1)) |>
print(n = Inf) |>
arrange(desc(n))
## # A tibble: 8 × 3
## consumo n Porcentaje_consumo
## <chr> <int> <dbl>
## 1 BEBIDAS ALCOHOLICAS 23476 30.9
## 2 BEBIDAS ALCOHOLICAS Y CIGARRILLOS 13450 17.7
## 3 CIGARRILLOS 2279 3
## 4 DROGAS 3053 4
## 5 DROGAS Y BEBIDAS ALCOHOLICAS 6130 8.1
## 6 DROGAS Y CIGARRILLOS 1255 1.7
## 7 DROGAS, BEBIDAS ALCOHOLICAS Y CIGARRILLOS 8203 10.8
## 8 NO/NO CONTESTA 18117 23.8
# A partir de la variable obtenida ('consumo'), se presenta a continuación un gráfico de barras que permitirá observar la cantidad de reos que consumían drogas, bebidas alcohólicas o cigarillos antes de ingresar al centro penitenciario.
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No sabe/No contesta")
CNPP_data|>
mutate(consumo = recode_factor(consumo,!!!etiqueta_1)) |>
count(consumo) |>
ggplot() +
aes(x=1, y=n, fill=consumo) +
geom_col(position = "dodge", width = 0.8) +
geom_text(aes(label = n),
position = position_dodge(width = 0.8), vjust = -0.5, size = 3, fontface = "bold") +
theme_minimal() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: CONSUMO ANTES DE INGRESAR AL ESTABLECIMIENTO \nPENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)",
x = "Consumo",
y = "Frecuencia")+
theme(axis.text.x = element_blank())
Como puede observarse, un gran número de reos señala que consumían bebidas alcohólicas antes de ingresar al establecimiento penitenciario. En segundo lugar, 18,117 reos mencionan que no consumían ninguna de las opciones previamente mencionadas o prefirieron no contestar a la interrogante.
Luego de ello, podemos observar que lo siguen en cantidad los reos que consumían “Bebidas alcohólicas y cigarrillos”, “Drogas, bebidas alcohólicas y cigarrilllos” y “Drogas y bebidas alcohólicas”; al respecto, puede observarse que las bebidas alcohólicas tienen una fuerte presencia en el consumo de los reos, desde antes de ingresar al establecimiento penitenciario.
# Utilizando 'count' y 'mutate' hallamos la cantidad de reos que trabajaron alguna vez antes de ingresar al establecimiento penitenciario, así como el porcentaje que representan respecto del total.
CNPP_data |>
count(P114) |>
mutate(Porcentaje_trabajo_antes = round(n/sum(n)*100,1)) |>
print(n = Inf) |>
arrange(desc(n)) |>
rename("cantidad_reos"=n)
## # A tibble: 2 × 3
## P114 n Porcentaje_trabajo_antes
## <dbl+lbl> <int> <dbl>
## 1 1 [Sí] 72610 95.6
## 2 2 [No] 3353 4.4
# A partir de ello, se presenta a continuación un gráfico circular que permitirá observar la cantidad de reos que trabajaron o no alguna vez antes de ingresar al establecimiento penitenciario.
table(CNPP_data$P114)
##
## 1 2
## 72610 3353
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No sabe/No contesta")
CNPP_data |>
mutate(P114 = recode_factor(P114,!!!etiqueta_1)) |>
count(P114) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P114) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5), size=3, fontface = "bold") +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE TRABAJÓ ANTES \nINGRESAR AL ESTABLECIMIENTO PENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)")
Como puede observarse, el 95.6% de los reos sí trabajó alguna vez antes de ingresar al establecimiento penitenciario.
# Utilizando 'count' y 'mutate' hallamos la cantidad de reos que tuvieron a algún miembro de su familia preso en un establecimiento penitenciario, así como el porcentaje que representan respecto del total.
CNPP_data |>
count(P133) |>
mutate(Porcentaje_trabajo_antes = round(n/sum(n)*100,1)) |>
print(n = Inf) |>
arrange(desc(n)) |>
rename("cantidad_reos"=n)
## # A tibble: 3 × 3
## P133 n Porcentaje_trabajo_antes
## <dbl+lbl> <int> <dbl>
## 1 1 [Sí] 22442 29.5
## 2 2 [No] 52924 69.7
## 3 3 [No recuerda / No contesta] 597 0.8
# A partir de ello, se presenta a continuación un gráfico circular que permitirá observar la cantidad de reos que tuvieron a algún miembro de su familia preso en un establecimiento penitenciario.
table(CNPP_data$P133)
##
## 1 2 3
## 22442 52924 597
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No recuerda/No contesta")
CNPP_data |>
mutate(P133 = recode_factor(P133,!!!etiqueta_1)) |>
count(P133) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P133) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5), size=3, fontface = "bold") +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: ¿ALGÚN MIEMBRO DE LA FAMILIA DEL REO PENITENCIARIO \nESTUVO PRESO EN UN ESTABLECIMIENTO PENITENCIARIO \nALGUNA VEZ?",
subtitle = "(Frecuencia, porcentaje)")
Como puede observarse, el 69.7% de los reos no tuvo a algún miembro de su familia preso en un establecimiento penitenciario; mientras que un 29.5% afirma que sí lo tuvo.
# Utilizando 'count' y 'mutate' hallamos la cantidad de reos que, antes de cumplir los 18 años de edad, tuvieron algún mejor amigo que cometía delitos, así como el porcentaje que representan respecto del total.
CNPP_data |>
count(P135) |>
mutate(Porcentaje_trabajo_antes = round(n/sum(n)*100,1)) |>
print(n = Inf) |>
arrange(desc(n)) |>
rename("cantidad_reos"=n)
## # A tibble: 3 × 3
## P135 n Porcentaje_trabajo_antes
## <dbl+lbl> <int> <dbl>
## 1 1 [SÍ] 25794 34
## 2 2 [No] 49370 65
## 3 3 [No recuerda / No contesta] 799 1.1
# A partir de ello, se presenta a continuación un gráfico circular que permitirá observar la cantidad de reos que, antes de cumplir los 18 años de edad, tuvieron algún mejor amigo que cometía delitoso.
table(CNPP_data$P135)
##
## 1 2 3
## 25794 49370 799
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No recuerda/No contesta")
CNPP_data |>
mutate(P135 = recode_factor(P135,!!!etiqueta_1)) |>
count(P135) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P135) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5), size=3, fontface = "bold") +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: ANTES DE QUE EL REO PENITENCIARIO CUMPLA \n18 AÑOS, ¿ALGUNO DE SUS MEJORES AMIGOS COMETÍAN \nDELITOS?",
subtitle = "(Frecuencia, porcentaje)")
Como puede observarse, el 65% de los reos señala que, antes de cumplir los 18 años de edad, no tuvieron algún mejor amigo que cometiera delitos; mientras que un 34% señala que sí lo tuvo.
-Enfermedades crónicas: asma, bronquitis o enfisema, hipertensión, diabetes.
-Enfermedades infecto contagiosas: tuberculosis, infecciones de transmisión sexual, VIH/SIDA.
-Otras enfermedades: hepatitis, depresión, ansiedad, adicción a sustancias psicoactivas, cáncer, otro.
# A continuación se crea una nueva variable, denominada "enfermedades"; cuyo valor es "Sí" cuando el reo posee una enfermedad crónica, infecto contagiosa u otra.
# Para dicho fin, en primer lugar creamos una variable dicotómica por cada tipo de enfermedad (Crónica/Infecto contagiosa/Otra); en la cual, el valor de "1" significa que el reo tiene al menos una enfermedad del tipo respectivo.
CNPP_data <- CNPP_data |>
mutate(enfermedad_cronica = case_when(P107_1 == 1 | P107_2 == 1 | P107_3 == 1 ~ "1", TRUE ~ "2"))
CNPP_data <- CNPP_data |>
mutate(enfermedad_infecto_contagiosa = case_when(P107_4 == 1 | P107_5 == 1 | P107_6 == 1 ~ "1", TRUE ~ "2"))
CNPP_data <- CNPP_data |>
mutate(enfermedad_otra = case_when(P107_7 == 1 | P107_8 == 1 | P107_9 == 1 | P107_10 == 1 | P107_11 == 1 | P107_12 == 1 ~ "1", TRUE ~ "2"))
# Luego, creamos una nueva variable denominada 'enfermedades', que pueda resumir el tipo de enfermedad que tiene cada reo penitenciario.
CNPP_data <- CNPP_data |>
mutate(enfermedades = case_when(enfermedad_cronica == 1 & enfermedad_infecto_contagiosa == 2 & enfermedad_otra == 2 ~ "CRONICA", enfermedad_cronica == 2 & enfermedad_infecto_contagiosa == 1 & enfermedad_otra == 2 ~ "INFECTO CONTAGIOSA", enfermedad_cronica == 2 & enfermedad_infecto_contagiosa == 2 & enfermedad_otra == 1 ~ "OTRA", enfermedad_cronica == 1 & enfermedad_infecto_contagiosa == 1 & enfermedad_otra == 2 ~ "CRONICA E INFECTO CONTAGIOSA", enfermedad_cronica == 1 & enfermedad_infecto_contagiosa == 2 & enfermedad_otra == 1 ~ "CRONICA Y OTRA", enfermedad_cronica == 2 & enfermedad_infecto_contagiosa == 1 & enfermedad_otra == 1 ~ "INFECTO CONTAGIOSA Y OTRA", enfermedad_cronica == 1 & enfermedad_infecto_contagiosa == 1 & enfermedad_otra == 1 ~ "CRONICA, INFECTO CONTAGIOSA Y OTRO", enfermedad_cronica == 2 & enfermedad_infecto_contagiosa == 2 & enfermedad_otra == 2 ~ "NINGUNA/NO SABE/NO RESPONDE"))
# Utilizando 'count' y 'mutate' hallamos la cantidad de reos que poseen cierto tipo de enfermedad, así como el porcentaje que representan respecto del total.
CNPP_data |>
count(enfermedades) |>
mutate(Porcentaje_enfermedades = round(n/sum(n)*100,1)) |>
print(n = Inf) |>
arrange(desc(n)) |>
rename("cantidad_reos"=n)
## # A tibble: 8 × 3
## enfermedades n Porcentaje_enfermedades
## <chr> <int> <dbl>
## 1 CRONICA 6546 8.6
## 2 CRONICA E INFECTO CONTAGIOSA 606 0.8
## 3 CRONICA Y OTRA 4334 5.7
## 4 CRONICA, INFECTO CONTAGIOSA Y OTRO 522 0.7
## 5 INFECTO CONTAGIOSA 2243 3
## 6 INFECTO CONTAGIOSA Y OTRA 647 0.9
## 7 NINGUNA/NO SABE/NO RESPONDE 48695 64.1
## 8 OTRA 12370 16.3
# A partir de la variable obtenida ('enfermedades'), se presenta a continuación un gráfico de barras que permitirá observar la cantidad de reos que poseen cierto tipo de enfermedad.
library(ggplot2)
CNPP_data |>
mutate(enfermedades = recode_factor(enfermedades, !!!etiqueta_1)) |>
count(enfermedades) |>
ggplot() +
aes(x = enfermedades, y = n, fill = enfermedades) +
geom_col(position = "dodge", width = 0.8) +
geom_text(aes(label = n),
position = position_dodge(width = 0.8), vjust = -0.5, size = 3, fontface = "bold") +
theme_minimal() +
scale_fill_brewer(palette = "Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PADECE \nDE ALGUNA ENFERMEDAD",
subtitle = "(Frecuencia)",
x = "Enfermedades",
y = "Frecuencia")+
theme(axis.text.x = element_blank())
Como puede observarse, un gran número de reos señala que no tiene ninguna enfermedad, o no sabe, o no responde a la pregunta realizada. En segundo lugar, 12,370 reos mencionan que tienen otro tipo de enfermedad (hepatitis, depresión, ansiedad, adicción a sustancias psicoactivas, cáncer, otro); seguido por aquellos que tienen una enfermedad crónica (asma, bronquitis o enfisema, hipertensión, diabetes).
# CNPP_data |>
# count(P201_DD) |> #count para contar la cantidad de casos.
# mutate(Porcentaje = round(n/sum(n)*100,1)) |> #Mutate crea la variable porcentaje.
# print(n = Inf) |>
# arrange(desc(n))
#Importar las librerías para el mapa
library(plotly)
library(mapsPERU)
library(tidyverse)
library(ggrepel)
library(haven)
library(leaflet)
library(leaflet.extras)
library(rworldxtra)
library(raster)
library(sf)
#Extraemos las coordenadas del paquete mapsPERU departamento
df <- map_DEP
#convertimos todas las variables que tenga caracteres
#de minúscula a mayúsculas.
df <- mutate_if(df, is.character, toupper)
#Quitamos las tildes de las mayúsculas
df$DEPARTAMENTO <- chartr('Á,É,Í,Ó,Ú','A,E,I,O,U', df$DEPARTAMENTO)
#Renombramos la variable P201_DD de la base CNPP_data
df_total_mapa <- rename(CNPP_data, DEPARTAMENTO = P201_DD)
#Extraemos los datos de interés para el mapa
Delito_depart <- df_total_mapa |>
count(DEPARTAMENTO) |> #count para contar la cantidad de casos.
mutate(Porcentaje = round(n/sum(n)*100,1)) |> #Mutate crea la variable porcentaje.
print(n = Inf) |>
arrange(desc(n))
## # A tibble: 27 × 3
## DEPARTAMENTO n Porcentaje
## <chr> <int> <dbl>
## 1 "" 70 0.1
## 2 "AMAZONAS" 709 0.9
## 3 "ANCASH" 2543 3.3
## 4 "APURIMAC" 538 0.7
## 5 "AREQUIPA" 1725 2.3
## 6 "AYACUCHO" 2241 3
## 7 "CAJAMARCA" 2006 2.6
## 8 "CALLAO" 4156 5.5
## 9 "CUSCO" 3009 4
## 10 "HUANCAVELICA" 464 0.6
## 11 "HUANUCO" 2177 2.9
## 12 "ICA" 2894 3.8
## 13 "JUNIN" 2463 3.2
## 14 "LA LIBERTAD" 4129 5.4
## 15 "LAMBAYEQUE" 2481 3.3
## 16 "LIMA" 22793 30
## 17 "LORETO" 1046 1.4
## 18 "MADRE DE DIOS" 813 1.1
## 19 "MOQUEGUA" 480 0.6
## 20 "NEP" 9318 12.3
## 21 "PASCO" 653 0.9
## 22 "PIURA" 2549 3.4
## 23 "PUNO" 1477 1.9
## 24 "SAN MARTIN" 1696 2.2
## 25 "TACNA" 835 1.1
## 26 "TUMBES" 749 1
## 27 "UCAYALI" 1949 2.6
#Integramos ambas bases de datos a través de DEPARTAMENTO
mapa_delitos <- left_join(df, Delito_depart, by = "DEPARTAMENTO")
#Creamos la base del mapa
leaflet() |> addTiles() |> addCircleMarkers(data = mapa_delitos, lat = ~coords_y, radius = ~Porcentaje,
lng = ~coords_x, color = "red",
fillOpacity = 3, label = ~n, labelOptions(permanent=TRUE) )
Lima fue el departamento donde ocurrieron la mayor cantidad de delitos (22793 delitos).
CNPP_data |>
filter(!is.na(P204)) |>
count(P204) |>
mutate(Porcentaje = round(n/sum(n)*100,1)) |>
print(n = Inf)
## # A tibble: 3 × 3
## P204 n Porcentaje
## <dbl+lbl> <int> <dbl>
## 1 1 [Sí] 13613 17.9
## 2 2 [No] 61617 81.2
## 3 3 [No sabe / No contesta] 663 0.9
table(CNPP_data$P204, useNA = "alw")
##
## 1 2 3 <NA>
## 13613 61617 663 70
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No sabe/No contesta")
CNPP_data$P204 <- as.factor(CNPP_data$P204)
CNPP_data |>
filter(!is.na(P204)) |>
mutate(P204 = recode_factor(P204,!!!etiqueta_1)) |>
count(P204) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P204) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE UTILIZÓ UN ARMA \nCUANDO OCURRIÓ EL DELITO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P215, useNA = "alw")
##
## 1 2 3 <NA>
## 5750 69651 492 70
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No sabe/No contesta")
CNPP_data$P215 <- as.factor(CNPP_data$P215)
CNPP_data |>
filter(!is.na(P215)) |>
mutate(P215 = recode_factor(P215,!!!etiqueta_1)) |>
count(P215) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P215) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE ESTUVO \nINTERNADO(A) EN ALGÚN CENTRO JUVENIL",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P220, useNA = "alw")
##
## 1 2 3 <NA>
## 9833 49037 461 16632
etiqueta_1 <- c(`1`="Sí",
`2`="No",
`3`="No sabe/No contesta")
CNPP_data$P220 <- as.factor(CNPP_data$P220)
CNPP_data |>
filter(!is.na(P220)) |>
mutate(P220 = recode_factor(P220,!!!etiqueta_1)) |>
count(P220) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P220) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE ESTUVO \nANTERIORMENTE SENTENCIADO O PROCESADO A PENA \nEFECTIVA POR ALGÚN OTRO DELITO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_1, useNA = "alw")
##
## 0 1 <NA>
## 65641 10189 133
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_1 <- as.factor(CNPP_data$P403_1)
CNPP_data |>
filter(!is.na(P403_1)) |>
mutate(P403_1 = recode_factor(P403_1,!!!etiqueta_2)) |>
count(P403_1) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_1) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nESTUDIAR LUEGO DE SALIR DEL ESTABLECIMIENTO \nPENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_2, useNA = "alw")
##
## 0 1 <NA>
## 5416 70414 133
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_2 <- as.factor(CNPP_data$P403_2)
CNPP_data |>
filter(!is.na(P403_2)) |>
mutate(P403_2 = recode_factor(P403_2,!!!etiqueta_2)) |>
count(P403_2) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_2) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nTRABAJAR LUEGO DE SALIR DEL ESTABLECIMIENTO \nPENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_3, useNA = "alw")
##
## 0 1 <NA>
## 72120 3710 133
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_3 <- as.factor(CNPP_data$P403_3)
CNPP_data |>
filter(!is.na(P403_3)) |>
mutate(P403_3 = recode_factor(P403_3,!!!etiqueta_2)) |>
count(P403_3) |>
mutate(
Porcentaje = round(n/sum(n)*100,1))|>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_3) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nVIAJAR LUEGO DE SALIR DEL ESTABLECIMIENTO \nPENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_4, useNA = "alw")
##
## 0 1 <NA>
## 74779 1051 133
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_4 <- as.factor(CNPP_data$P403_4)
CNPP_data |>
filter(!is.na(P403_4)) |>
mutate(P403_4 = recode_factor(P403_4,!!!etiqueta_2)) |>
count(P403_4) |>
mutate(
Porcentaje = round(n/sum(n)*100,1))|>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_4) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nRETORNAR A SU PAÍS LUEGO DE SALIR DEL \nESTABLECIMIENTO PENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_5, useNA = "alw")
##
## 0 1 <NA>
## 74376 1454 133
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_5 <- as.factor(CNPP_data$P403_5)
CNPP_data |>
filter(!is.na(P403_5)) |>
mutate(P403_5 = recode_factor(P403_5,!!!etiqueta_2)) |>
count(P403_5) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_5) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nREALIZAR OTRA ACTIVIDAD LUEGO DE SALIR DEL \nESTABLECIMIENTO PENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_6, useNA = "alw")
##
## 1 <NA>
## 3693 72270
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_6 <- as.factor(CNPP_data$P403_6)
CNPP_data |>
filter(!is.na(P403_6)) |>
mutate(P403_6 = recode_factor(P403_6,!!!etiqueta_2)) |>
count(P403_6) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_6) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nREGRESAR CON SU FAMILIA LUEGO DE SALIR \nDEL ESTABLECIMIENTO PENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
table(CNPP_data$P403_7, useNA = "alw")
##
## 1 <NA>
## 762 75201
etiqueta_2 <- c(`0`="No",
`1`="sí")
CNPP_data$P403_7 <- as.factor(CNPP_data$P403_7)
CNPP_data |>
filter(!is.na(P403_7)) |>
mutate(P403_7 = recode_factor(P403_7,!!!etiqueta_2)) |>
count(P403_7) |>
mutate(
Porcentaje = round(n/sum(n)*100,1)) |>
ggplot() +
aes(x=1, y=Porcentaje, fill=P403_7) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(n,", ",round(Porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_brewer(palette="Set1") +
labs(
title = "PERÚ: POBLACIÓN PENITENCIARIA QUE PIENSA \nREINCORPORARSE A LA SOCIEDAD LUEGO DE SALIR \nDEL ESTABLECIMIENTO PENITENCIARIO",
subtitle = "(Frecuencia, porcentaje)"
)
…